The term service oriented architecture is used in computing to express a software architectural concept that defines the provision and use of services to support the requirements of software users. In a SOA, discrete, independent services can be made available on a network which can be accessed by the developer to allow the developer to create software solutions through a combination of SOA services.
In other architectures, software solutions are designed to be application specific and the software system will be designed and implemented in order to fulfil a specific range of tasks for a client. For example, where an organisation has a number of separate businesses, each with specific computing requirements then each will develop a bespoke application to meet the requirements.
It is evident that in many organizations, the functionality contained on different applications may be the same or similar and there is a large amount of redundancy because this functionality exists on a number of applications. Furthermore, the design of applications and the way they handle data can be highly application specific and the data may be formatted in a specific wav for the application.
The implementation of a SOA would in theory, avoid this redundancy because business services would be available to clients throughout the organisation. These services would not be application specific, but would be designed to be used by all clients.
Clearly, an SOA would be highly desirable because:
it would allow the rapid construction and adaptation of software business processes and so called composite applications;
the business service function would be delivered as autonomous services; and
the services would be independent of each other and any particular implementation strategy.
However, there are a number of problems associated with attempting to implement an SOA. The implementation of an SOA requires a high degree of standardisation across an organisation in order that services can be readily consumed. Therefore, organisations who are accustomed to having software designed to meet the needs of a specific application, will be required to change their approach. This requires the implementation of rules and procedures for designing SOA oriented software. In addition, in large organisations the scaling up of an SOA presents problems of tracking interactions and of collecting information on the manner in which services are used.